﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Dapper;
using ProjetoSolo.QueroGas.Dominio.Entidades;
using ProjetoSolo.QueroGas.Dominio.Repositorios;
using ProjetoSolo.QueroGas.Infraestrutura.PersistenciaAdo.Extensions;

namespace ProjetoSolo.QueroGas.Infraestrutura.PersistenciaAdo.Repositorios
{
    public class RepositorioDistribuidora : IRepositorioDistribuidora
    {
        private readonly ContextoAdo contexto;

        public RepositorioDistribuidora(IContextoRepositorio contexto)
        {
            this.contexto = (ContextoAdo) contexto;
        }

        public Distribuidora PegarPorCodigo(int codigoDistribuidora)
        {
            return null;
        }

        public IEnumerable<Distribuidora> PegarListaCompleta()
        {
            return contexto.Conexao.Query<Distribuidora>("select IdDistribuidora, Nome from Distribuidora", null, this.contexto.Transacao());            
        }

        public int Cadastrar(Distribuidora distribuidora)
        {
            if (DistribuidoraJahExiste(distribuidora))
                return 0;

            return this.contexto.Conexao.Query<int>("insert into Distribuidora ouput inserted.IdDistribuidora values(@Nome)", 
                distribuidora, this.contexto.Transacao()).First();
        }

        public int PegarCodigoDistribuidora(Distribuidora distribuidora)
        {            
            return this.contexto.Conexao.Query<int>("select IdDistribuidora from Distribuidora where Nome = @Nome", distribuidora, 
                this.contexto.Transacao()).First();
        }

        private bool DistribuidoraJahExiste(Distribuidora distribuidora)
        {
            return this.contexto.Conexao.Query("select IdDistribuidora from Distribuidora where Nome = @Nome", 
                distribuidora, this.contexto.Transacao()).Any();
        }
    }
}
